package q1700_countStudents;

import java.util.*;

public class Solution_1 {
    /*
    无法吃午餐的学生数量
    不需要模拟学生队列不断尝试，也不需要构建栈，假设需要1的学生为cnt1个，需要0的学生为cnt0个
    因为学生会不断排队，所以使用一个指针p指向sandwiches的首位
    然后考虑目前是否能够满足cnt0 > 0 && sandwiches[p] == 0 || cnt1 > 0 && sandwiches[p] == 1
    如果可以则p后移
    否则就结束循环得到答案
     */
    public int countStudents(int[] students, int[] sandwiches) {
        int cnt1 = 0, cnt0 = 0, n = students.length;
        for (int student : students) {
            cnt1 += student;
        }
        cnt0 = n - cnt1;
        int p = 0;
        while (cnt0 > 0 && sandwiches[p] == 0 || cnt1 > 0 && sandwiches[p] == 1) {
            cnt1 -= sandwiches[p];
            cnt0 -= 1 - sandwiches[p];
            ++p;
        }
        return n - p;
    }
}
